package main

import "fmt"

func main() {
	// 0b开头的数是二进制数
	a := 0b101
	b := 0b100
	fmt.Printf("%b\n", a)
	fmt.Printf("%b\n", b)
	//&       按位与：只有两个数都是1结果才为1
	c := a & b
	fmt.Printf("&运算：%b\n", c)
	//|       按位或：两个数有一个是1 结果就是1
	d := a | b
	fmt.Printf("|运算：%b\n", d)
	//^       异或运算：相同为0，不相同为1
	e := a &^ b
	fmt.Printf("^运算：%b\n", e)
	//<<      左移运算：右边空出的位用0填补
	fmt.Printf("<<运算之前：%b\n", a)
	a <<= 2
	fmt.Printf("<<运算之后：%b\n", a)
	//>>      右移运算：左边空出的位用0或者1填补。正数用0填补，负数用1填补
	fmt.Printf(">>运算之前：%b\n", a)
	a >>= 2
	fmt.Printf(">>运算之后：%b\n", a)
}
